﻿using System;
using System.Threading;

namespace ConsoleApp
{
    class Program
    {
        public static void CallToChildThread()
        {
            Console.WriteLine("Child thread starts");
        }

        static void Main(string[] args)
        {
            //ThreadStart childref = new ThreadStart(CallToChildThread);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(CallToChildThread); // 本篇文章的第二段代码创建线程中，在2.0以后可以直接执行子线程，这样一来程序可以省略Main函数中的第一行代码。运行结果一样，似乎程序会更简单易懂点。
            childThread.Start();
            Console.ReadKey();
        }
    }
}
/*
 
Thread childThread = new Thread( new ThreadStart(CallToChildThread));
Thread childThread = new Thread(CallToChildThread);

这两种写法的效果是一样的。都是创建一个线程。后者只是 C# 的语法，编译时编译器会自动转换成第一种的形式。ThreadStart 是线程的入口，可以理解为一个函数指针，指向线程将要运行的函数。
 

经测试上面两种写法是有一点区别的，如果 CallToChildThread 方法没有重载，可以直接用下面的简化写法，如果有重载就需要先用 new ThreadStart 创建线程入口，不然编辑器会报“方法或属性调用不明确”错误。
 */